home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 36 / Amiga Format CD36 (1999-01-22)(Future Publishing)(GB)[!][issue 1999-02].iso / -seriously_amiga- / misc / setman / docs / setman.doc next >
Text File  |  1998-12-07  |  6KB  |  156 lines

  1.                                SetFunction Manager
  2.  
  3.                              SetMan / SetManager V2.1
  4.  
  5.  
  6.   V1.0 : Copyright © 1991,1992 by
  7.  
  8.          Nicola Salmoria
  9.          Via Piemonte 11
  10.          53100 Siena ITALY
  11.  
  12.          Internet: mc6489@mclink.it
  13.  
  14.   V2.0 : Copyright © 1998 by
  15.   
  16.          Eric Sauvageau
  17.  
  18.          (My mail address will change in the next month, so use Email 
  19.           for now if you need to get in touch with me.)
  20.  
  21.          Internet: merlin@thule.no
  22.                    http://www.thule.no/~merlin/
  23.  
  24.                    IRC: RMerlin on irc.amiganet.org/#amiga
  25.          
  26.  
  27. (Marco Lugo: This is the last version of SetMan made by Eric.
  28. He left the Amiga a few months ago.
  29. Thanks Eric for sending me the sources so I could do some work on it.)
  30.  
  31.  
  32. This program is FREEWARE. It is NOT, and will never be, public domain.
  33. Copy it as much as you can (provided no charge is made and the archive is 
  34. left intact). It cannot be included in any commercial program without the 
  35. written permission of the author.
  36.  
  37.  
  38. REQUIREMENTS
  39. ------------
  40. Since V2.0, SetMan requires Kickstart 2.04 or better to run.  SetManager 
  41. will also require ClassAct 2.0 for its GUI (latest classes can be found 
  42. on the Internet at ftp.warped.com /pub/amiga/classact or 
  43. ftp.thule.no /pub/classact/).  SetManList only requires Kickstart 2.04.
  44.  
  45.  
  46. NOVICE USERS
  47. ------------
  48. The program 'SetMan' should be put in C: and executed as the first command in
  49. the startup-sequence. When I say first, I mean FIRST!!  Run it even before
  50. SetPatch:
  51.  
  52.         C:SetMan >NIL:
  53.  
  54. If you're not expert with the Amiga operating system, all you need to know
  55. about SetMan is that it will, under certain circumstances, avoid GURUs.
  56. Read on for more infos.
  57.  
  58.  
  59.  
  60. EXPERT USERS
  61. ------------
  62. Let's go into details.  There's a function in exec.library, whose name is
  63. SetFunction().  You know that Amiga libraries contain a 'jump table', where
  64. are stored the addresses of every function in the library.  Library
  65. functions are always executed via the jump table, and NEVER through
  66. absolute addressing.  SetFunction() allows the user to modify the jump
  67. table, in order to insert a custom routine in place of the standard one.
  68. For example, one could modify the DisplayBeep() vector to play a sound
  69. instead of flashing the screen.
  70.  
  71. SetFunction() is a very useful feature of the Amiga operating system, but
  72. it has the major drawback that there's no system supervising of concurrent
  73. use of the same vector by different tasks.  Under certain circumstances,
  74. that can be deadly.  Before removing its custom vector, a program should
  75. check that it was not modified again.  However, very few do that, and so if
  76. you do not terminate such program in REVERSE order of when you executed
  77. them, you'll probably get a system crash.
  78.  
  79. SetMan modifies the SetFunction() vector, and inserts a custom routine which
  80. solves the previous problems. It keeps a linked list of all changes to
  81. the jump tables, and allows any program to remove its vector at any time.
  82.  
  83.  
  84. In this archive you will find two additional tools:
  85.  
  86. SetManager - it is a Commodity that will allow you to view the list of all
  87.              modified vectors, with the name of the program which inserted 
  88.              a custom routine, the address of that routine, and the current 
  89.              status.  Status will usually be 'active'; if you double-click 
  90.              on the function name, you can disable it, thus removing the 
  91.              custom function.  The third possible state is 'removed', which 
  92.              only occurs when you don't quit programs in the correct
  93.              order I explained later.  It's there for your information, 
  94.              but is absolutely no problem.  When you exit the other program 
  95.              which uses the same vector, both will disappear from the list.
  96.  
  97. NOTE:  modified vectors are shown as 'offset' 'library name'.  However,
  98. SetManager is able to read the standard 'xxx_lib.fd' files, provided by
  99. Commodore.  Just specify the path where those files are located by using
  100. the FDPATH argument (by default, FD:  will be scanned).  With the help of
  101. these files, SetManager will display the true function names, instead of
  102. offsets.
  103.  
  104.  
  105. SetManList - a CLI command that lets you list the list of all modified 
  106.              vectors in a CLI, just like SetManager does.  It supports 
  107.              two arguments:  NOFD (do not parse .fd files) and FDPATH 
  108.              (location of your .fd files, FD: being the default).
  109.              You can break the output by pressing Ctrl-C.
  110.  
  111.  
  112. PROGRAMMERS
  113. -----------
  114. To know if SetMan is running, all you have to do is search for a public
  115. MsgPort named "SetMan".  When running, you can safely install and remove
  116. patches at any time through SetFunction(), SetMan will take care of
  117. ensuring that any patches applied over yours is properly installed instead
  118. of the former one.
  119.  
  120.  
  121.  
  122. BUGS AND INCOMPATIBILITIES
  123. --------------------------
  124. There are no known bugs in this version of SetMan.
  125.  
  126. A few more words should be spent on compatibility problems.
  127. Due to the very different procedures followed by the original SetFunction()
  128. and by SetMan, it's not possible to guarantee a 100% compatibility with
  129. every program around.  Every effort has been made to avoid every possible
  130. problem; SetMan handles correctly every strange behaviour I could think
  131. about; the only way to confuse SetMan should be using two differnt programs
  132. communicating through a message port and doing very strange things.  I'm
  133. almost sure such things things should never happen.
  134.  
  135. I've encountered a problem with a program called 'TurboTopaz', which
  136. refuses to quit saying that 'Vector has been changed'.  That's true, 'cos
  137. SetMan puts a function of its own ahead of the custom one; if TurboTopaz
  138. used SetFunction(), it would receive in return the value it expects, but it
  139. reads directly the jump table, something I believe is not supported by
  140. Commodore.
  141.  
  142. I use a lot of programs which call SetFunction(), and none of them has
  143. problems with SetMan.
  144.  
  145.  
  146. ACKNOWLEDGEMENT
  147. ---------------
  148. I'd like to thank Marco Ciuchini who pointed out an important incompatibility
  149. problem which I have been able to completely remove.
  150.  
  151. (Eric: I'd like to thank Nicola for writing SetMan, and for sending me the 
  152. sources so I could do some work on it.  He's the real man behind SetMan, 
  153. I merely updated it, especialy SetManager which I rewrote to offer some 
  154. modern features it was missing like turning it into a Commodity and giving 
  155. it a more advanced GUI.)
  156.